package com.ruoyi.scheme.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.*;
import java.math.BigDecimal;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErsSchemeCostUpdateItemDTO {

    // 主键（必传，用于定位单条记录）
    @NotNull(message = "记录ID（id）不能为空")
    @Positive(message = "记录ID必须为正数")
    private Long id;

    // 单价项名称（可选修改，若传递则校验长度）
    @Size(max = 100, message = "单价项名称（itemName）长度不能超过100字符")
    private String itemName;

    // 修复方案分类（可选修改，若传递则校验范围）
    @Min(value = 1, message = "方案分类（category）必须为1-4的整数")
    @Max(value = 4, message = "方案分类（category）必须为1-4的整数")
    private Integer category;

    // 计量单位（可选修改，若传递则校验长度）
    @Size(max = 32, message = "计量单位（unit）长度不能超过32字符")
    private String unit;

    // 单价（可选修改，若传递则校验金额格式）
    @DecimalMin(value = "0.01", message = "单价（unitPrice）必须大于0")
    @Digits(integer = 10, fraction = 2, message = "单价最多保留2位小数")
    private BigDecimal unitPrice;

    // 面积（可选修改，若传递则校验格式）
    @DecimalMin(value = "0.01", message = "面积（area）必须大于0")
    @Digits(integer = 10, fraction = 2, message = "面积最多保留2位小数")
    private BigDecimal area;

    // 总价（可选修改，若传递则校验格式）
    @DecimalMin(value = "0.01", message = "总价（totalPrice）必须大于0")
    @Digits(integer = 12, fraction = 2, message = "总价最多保留2位小数")
    private BigDecimal totalPrice;
}
